home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok19 / trackdisksupport / trackdemo.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  102 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    TrackDemo.mod
  4.     :Contents.   Test and demo module for "TrackDiskSupport"
  5.     :Author.     Fridtjof Siebert [fbs]
  6.     :Author.     Nicolas Benezan [bne]
  7.     :Address.    [bne] Postwiesenstr. 2, D7000 Stuttgart 60
  8.     :Phone.      [bne] 711/333679
  9.     :Copyright.  Public Domain
  10.     :Language.   Modula-2
  11.     :Translator. M2Amiga A+L V3.2d
  12.     :Imports.    TrackDiskSupport2.0 [fbs],[bne]
  13.     :History.    V1.0 [fbs] ?.Dez.1988
  14.     :History.    V2.0 [bne] 13.May.1989
  15.  
  16. **********************************************************************)
  17. MODULE TrackDemo;
  18.  
  19. FROM Arts             IMPORT BreakPoint;
  20. FROM Exec             IMPORT Byte;
  21. FROM TrackDisk        IMPORT badDriveType;
  22. FROM InOut            IMPORT WriteString, WriteLn, WriteInt, Write,
  23.                              ReadString, WriteHex;
  24. FROM MemSystem        IMPORT NoCareAllocMem, Deallocate;
  25. FROM SYSTEM           IMPORT ADR, CAST;
  26. FROM TrackDiskSupport IMPORT OpenDiskDevice, CloseDiskDevice, GetDiskChange,
  27.                              ChangeState, ProtStatus, Motor, ReadBlock,
  28.                              GetDriveType, GetNumTracks, DiskUnit,
  29.                              DeviceInfo, GetDeviceInfo;
  30.  
  31. VAR
  32.   DevName: ARRAY [0..7] OF CHAR;
  33.   Unit: DiskUnit;
  34.   Error: Byte;
  35.   Buffer: POINTER TO ARRAY [0..511] OF CHAR;
  36.  
  37. PROCEDURE WriteDiskInfo;
  38.   VAR
  39.     Info:DeviceInfo;
  40.   BEGIN
  41.     GetDeviceInfo(Unit,Info);
  42.     WITH Info DO
  43.       WriteString("DeviceName: "); WriteString(devName); WriteLn;
  44.       WriteString("Unit:       "); WriteInt(devUnit,1); WriteLn;
  45.       WriteString("Flags:      "); WriteHex(CAST(LONGINT,devFlags),2); WriteLn;
  46.       WriteString("BlockSize:  "); WriteInt(blockLen,1); WriteLn;
  47.       WriteString("TrackSize:  "); WriteInt(trackLen,1); WriteLn;
  48.       WriteString("CylindSize: "); WriteInt(cylinderLen,1); WriteLn;
  49.       WriteString("Blocks:     "); WriteInt(numBlocks,1); WriteLn;
  50.     END;
  51.   END WriteDiskInfo;
  52.  
  53. BEGIN
  54.   NoCareAllocMem(Buffer,SIZE(Buffer^),TRUE);
  55.   LOOP
  56.     WriteString('Device-Namen eingeben (zB. "DF0"): ');
  57.     ReadString(DevName);
  58.     IF DevName[0]=CHR(0) THEN
  59.       EXIT
  60.     END;
  61.     Error:= OpenDiskDevice(DevName,Unit);
  62.     IF Error=badDriveType THEN
  63.       WriteString(" not connected");
  64.       WriteLn;
  65.     ELSIF Error#0 THEN
  66.       WriteString(" Error:"); WriteInt(Error,4);
  67.       WriteLn;
  68.     ELSE
  69.       WriteString(" ok");
  70.       WriteLn;
  71.       WriteDiskInfo;
  72.       WriteString("  DiskChangeCount:");
  73.       WriteInt(GetDiskChange(Unit),5);
  74.       WriteLn;
  75.       IF ChangeState(Unit) THEN
  76.         WriteString("  Disk in Drive");
  77.       ELSE
  78.         WriteString("  No Disk in Drive");
  79.       END;
  80.       WriteLn;
  81.       IF ProtStatus(Unit) THEN
  82.         WriteString("  Write enabled");
  83.       ELSE
  84.         WriteString("  Write protected");
  85.       END;
  86.       WriteLn;
  87.       Error:= ReadBlock(Unit,0,1,Buffer,GetDiskChange(Unit));
  88.       IF Error#0 THEN
  89.         WriteString("Couldn't read block! Error: "); WriteInt(Error,4);
  90.       ELSE
  91.         WriteString("  DiskID: ");
  92.         Write(Buffer^[0]); Write(Buffer^[1]);
  93.         Write(Buffer^[2]); Write(Buffer^[3]);
  94.       END;
  95.       WriteLn;
  96.       IF Motor(Unit,FALSE) THEN END;
  97.       CloseDiskDevice(Unit);
  98.     END;   (* IF OpenTrackDisk()#0 THEN ELSE *)
  99.   END;   (* LOOP *)
  100.   Deallocate(Buffer);
  101. END TrackDemo.
  102.